package com.eeda123.jfinal.route;

import bsh.EvalError;
import bsh.Interpreter;
import com.jfinal.kit.LogKit;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;

public class DynamicRouteController extends DynamicRouteBaseController {

    /**
     * url 对应执行本方法
     */
    public void index() {
        LogKit.debug("enter DynamicRouteController index()");
        
        execute();

        //调试完成后, 将debug方法内容更新到数据库并注释掉本方法!
        //debug();
    }

    private void execute() {
        //动态执行java代码
        String originUrl = getAttr("originUrl");
        Record rec = Db.findFirst("select * from t_dynamic_route where url=?", originUrl);
        //待计算的表达式，将计算结果赋值给outValue
        String evalString = rec.getStr("codes");

        //调用beanshell进行计算
        Interpreter interpreter = new Interpreter();
        try {
            interpreter.setStrictJava(true);//严格使用java代码格式
            //设置输入参数：传入controller对象
        	interpreter.set("ctrl", this);
            interpreter.set("cl", this);
            //执行
            interpreter.eval(evalString);
        } catch (EvalError evalError) {
            evalError.printStackTrace();
        }
    }

    /*
        将需要调试的java代码放到本方法
     */
    private void debug() {
        DynamicRouteController ctrl = this;
        LogKit.fatal("debug only, 当出现这句话表明没有注释本方法!!!!!-----------------------");


    }


}
